package pl.koziolekweb.translator.engine;

import java.util.List;

/**
 * 
 * @author bartlomiejk
 * 
 * 
 *         $Id: Translator.java 159 2009-03-12 19:56:51Z bjkuczynski $
 */
public interface Translator {

	/**
	 * Metoda tłumaczy zadany tekst na język domyślny. Język tekstu jest
	 * rozpoznawany automatycznie.
	 * 
	 * @param text
	 *            tekst do przetłumaczenia
	 * @return przetłumaczony tekst
	 * @throws Throwable
	 *             tłumaczenie może zwrócić wyjątek.
	 */
	public String translate(String text) throws Throwable;

	/**
	 * Metoda służy do tłumaczenia tekstu w zadanym języku na język domyślny.
	 * 
	 * @param text
	 *            tekst do przetłumaczenia
	 * @param from
	 *            jezyk docelowy tłumaczenia
	 * @return przetłumaczony tekst
	 * @throws Throwable
	 *             tłumaczenie może zwrócić wyjątek.
	 */
	public String translate(String text, Language from) throws Throwable;

	/**
	 * Metoda służy do tłumaczenia tekstu w języku zadanym w parametrze
	 * <samp>from</samp> na język zadany w parametrze <samp>to</samp>.
	 * 
	 * @param text
	 *            tekst do przetłumaczenia
	 * @param from
	 *            język z ktorego następuje tłumaczenie.
	 * @param to
	 *            jezyk docelowy tłumaczenia
	 * @return przetłumaczony tekst
	 * @throws Throwable
	 *             tłumaczenie może zwrócić wyjątek.
	 */
	public String translate(String text, Language from, Language to)
			throws Throwable;

	/**
	 * Metoda zwraca {@link List listę} {@link Language języków} wspieranych
	 * przez translator.
	 * 
	 * @return lista wspieranych języków
	 */
	public List<Language> getSupportedLanguages();
}
